/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.foxinline.manager;

import br.com.foxinline.modelo.Anexo;
import br.com.foxinline.servico.ImovelServico;
import java.io.Serializable;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;

/**
 *
 * @author laverson
 */
@ManagedBean
@ViewScoped
public class ManagerImagem implements Serializable {

    @EJB
    ImovelServico imovelServico;
    private static final String URL_ANNEX = "show/?annex=";
    private static final String URL_ANNEX_CONTENT = "show/?annexContent=";
    private static final String URL_PDF = "media/images/pdf.jpeg";
    private static final String THUMBNAIL = "thumbnail.";
    private static final String APPLICATION_PDF = "application/pdf";
    private static final String APPLICATION_NAME = "Notario-war/";
    private static final int tamanhoMaximoNome = 10;
    private String URL;

    @PostConstruct
    public void init() {
        URL = getRequestURL();
        String[] split = URL.split(APPLICATION_NAME);

        URL = split[0].concat(APPLICATION_NAME).concat("media/images/imageJPG.png");
    }

    /**
     * Retorna a URL do sistema
     *
     * @return
     */
    public String getRequestURL() {
        Object request = FacesContext.getCurrentInstance().getExternalContext().getRequest();
        if (request instanceof HttpServletRequest) {
            String requestURL = ((HttpServletRequest) request).getRequestURL().toString();
            return requestURL;
        }

        return "";
    }

    /**
     * Retorna a URL da miniatura do anexo
     *
     * @param anexo
     * @return "show/?annex=/caminho/thumbnail.imagem.[jpg|png|...]"
     */
    public String urlThumbnailImagem(Anexo anexo) {
        
//        if (anexo.getId() == null) {
//            return anexo.getUrl();
//        }

        if (anexo.getUrl() != null && !anexo.getUrl().isEmpty()) {
            String url = URL_ANNEX;
            url += anexo.getUrl().concat(THUMBNAIL).concat(anexo.getNome());
            return url;
        }

        return URL;
    }

    /**
     * Retorna a URL para visualziar a imagem no navegador
     *
     * @param anexo
     * @return "/caminho/imagem.[jpg|png|...]"
     */
    public String urlVisualziarImagem(Anexo anexo) {

        if (anexo.getId() == null) {
            if (anexo.getUrl() != null && !anexo.getUrl().isEmpty()) {
                return anexo.getUrl().concat(anexo.getNome());
            }
        } else if (anexo.getId() != null) {
            return anexo.getId().toString();
        }

        return URL;
    }

    /**
     * Retorna a URL para visualizar a miniatura do PDF
     *
     * @return "media/images/pdf.jpeg"
     */
    public String getUrlPDF() {
        return URL_PDF;
    }

    public String nomeAnexo(Anexo anexo) {
        if (anexo.getNomeExibicao() != null) {
            if (anexo.getNomeExibicao().length() >= tamanhoMaximoNome) {
                return anexo.getNomeExibicao().substring(0, tamanhoMaximoNome).concat("...");
            }
            return anexo.getNomeExibicao().replace(".png", "").replace(" ", "_");
        }

        if (anexo.getNome().length() >= tamanhoMaximoNome) {
            return anexo.getNome().substring(0, tamanhoMaximoNome).concat("...");
        }
        return anexo.getNome().replace(".png", "").replace(" ", "_");
    }

    /**
     * Retorna o nome do arquivo truncado se seu tamanho for superior a 10
     * caracteres
     *
     * @param anexo
     * @return
     */
    public String nomeAnexoPdf(Anexo anexo) {
        if (anexo.getNomeExibicao() != null) {
            if (anexo.getNomeExibicao().length() >= tamanhoMaximoNome) {
                return anexo.getNomeExibicao().substring(0, tamanhoMaximoNome).concat("...");
            }
            return anexo.getNomeExibicao().replace(".pdf", "").replace(" ", "_");
        }

        if (anexo.getNome().length() >= tamanhoMaximoNome) {
            return anexo.getNome().substring(0, tamanhoMaximoNome).concat("...");
        }
        return anexo.getNome().replace(".pdf", "").replace(" ", "_");
    }

    /**
     * Verifica se o arquivo é um PDF
     *
     * @param anexo
     * @return
     */
    public boolean PDF(Anexo anexo) {
        return anexo.getTipo().equals(APPLICATION_PDF);
    }

    /**
     * Verifica se o arquivo é uma imagem
     *
     * @param anexo
     * @return
     */
    public boolean imagem(Anexo anexo) {
        return !anexo.getTipo().equals(APPLICATION_PDF);
    }
}
